package com.huaxin.hxenum.validation;

import com.huaxin.hxenum.validator.DeviceTypeValidator;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

/**
 * 校验设备类型（DeviceType）枚举值的有效性
 * 用于字段或参数上，确保传入的值是系统支持的设备类型 code
 */
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = DeviceTypeValidator.class) // 指定校验器
public @interface ValidDeviceType {

    // 校验失败时的默认提示消息
    String message() default "无效的设备类型，允许值：circuit_breaker/environment_sensor/power_meter/ups/hvac/lighting/access_control/camera/gas_detector/water_sensor/security_zone";

    // 分组校验支持
    Class<?>[] groups() default {};

    // 负载信息（用于携带元数据）
    Class<? extends Payload>[] payload() default {};
}
